package controlador;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import modelo.mReceta;
import modelo.mCategoriaDao;
import modelo.mProducto;
import modelo.mProductoDao;
import modelo.mIngrediente;
import modelo.mIngredienteDao;
import modelo.mRecetaDao;
import vista.vProducto;

public class cProducto implements ActionListener {

	vProducto pro=new vProducto();
	mProductoDao productodao=new mProductoDao();
	mCategoriaDao categoriadao=new mCategoriaDao();
	mIngredienteDao ingredientedao=new mIngredienteDao();
	public cProducto() {
		super();
		// TODO Auto-generated constructor stub
		this.pro = new vProducto();
		this.pro.setLocation(300,150);
		this.pro.setVisible(true);	
		this.pro.addListener(this);
		 pro.CargarCombo(categoriadao.CargarCombo());
	     pro.CargarComboingrediente(ingredientedao.CargarCombo());
	}
	@Override
	 public void actionPerformed(ActionEvent e) 
	  {
	String actionCommand = e.getActionCommand();
	pro.setUnidad(ingredientedao.BuscarIngredienteN(pro.getingrediente()).getUnidad());
			if (actionCommand.equals("Guardar"))
			{
				RegistrarProducto();
			}		
			else if (actionCommand.equals("Cancelar"))
			{
				pro.Limpiar();
			}
			else if(actionCommand.equals("Salir"))
			{
				this.pro.dispose();
			}else if(actionCommand.equals("Remover"))
			{
				pro.getModelo().Remover(pro.Posicion());
			}else if(actionCommand.equals("Incluir"))
			{
				mIngrediente ingre=new mIngrediente();
				ingre=ingredientedao.BuscarIngredienteN(pro.getingrediente());
			    boolean encontrado=ValidarIngrediente(ingre);
				if(!encontrado)	
				pro.getModelo().incluir(ingre.getCodigoing(), ingre.getNombreing(), pro.getCantidad(), ingre.getUnidad());
				else
					pro.Mensaje("El Ingrediente ya esta en la receta");
			}
	  }
	 
	 public boolean ValidarIngrediente(mIngrediente ingre)
	    {
	    	boolean encontrado=false; 
			int i=pro.getModelo().getRowCount();
			for(int j=0; j<i;j++)
			{
				String hola =String.valueOf(pro.getModelo().getValueAt(j, 0));
				String chao =ingre.getCodigoing();
				if(hola.equalsIgnoreCase(chao))
				{
					encontrado=true;
				}
			}
			return encontrado;
	    }
	 private void RegistrarProducto()
	 {
		 try
		  {
	    	if(pro.getCodigo().equals("") || pro.getNombre().equals("")||pro.getPrecio().equals(""))
	    		pro.Mensaje("Debe llenar todos los datos para poder registrar el Producto");
	    	else
	    	{
	    		if(productodao.getProductoC(pro.getCodigo()).getNombrepro()=="")
	    		{
	    		if(productodao.getProductoN(pro.getNombre()).getCodigopro()=="")
	    		{
		        mProducto producto=new mProducto(categoriadao.getCategoria(pro.getcategoria()),pro.getCodigo(), pro.getNombre(),Double.parseDouble(pro.getPrecio()));
		        mRecetaDao recetadao=new mRecetaDao();
		        productodao.RegistrarProducto(producto);
		        
		        int i=pro.getModelo().getRowCount();
		        for(int j=0; j<i;j++)
		        {
		        mReceta receta =new mReceta(producto,ingredientedao.BuscarIngredienteC(String.valueOf(pro.getModelo().getValueAt(j, 0))),"r"+producto.getCodigopro(), Double.parseDouble(String.valueOf(pro.getModelo().getValueAt(j, 2))));
		        recetadao.RegistrarReceta(receta);
		        }
		        pro.getModelo().Limpiar();
		        pro.Mensaje("El Producto fue Registrado con Exito");
	    		}else
	    			pro.Mensaje("El Nombre del Producto ya existe");
	    	    }else 
	    			pro.Mensaje("El Codigo del Producto ya existe");
		        pro.Limpiar();
	    	}
		  }
	  	catch(Exception e)
		 {
			pro.Mensaje("No se pudo registrar el Producto, verifique que los datos sean correctos");
		  	pro.Limpiar();
	 	 }
	 }
}
